package com.wy.thread_pool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author 美女
 * @date 2022/05/03 14:21
 **/
public class Demo2 {
    public static void main(String[] args) {
        //常用到的线程池--不太建议在实际生产中使用（策略太固定，不够灵活）

        //1.创建一个固定长度的线程池  fix:固定
        //内部-传进来的大小就是核心线程的大小(10),没有临时工，所以也没有临时工摸鱼时间的问题，LinkedBlockingQueue说明队列没有容量上限
        ExecutorService service = Executors.newFixedThreadPool(10);
        //2.创建一个单一的线程
        //single:单一的 内部：只有一个核心线程，没有临时的线程，队列是LinkedBlockingQueue说明也是没有容量上限
        ExecutorService service1 = Executors.newSingleThreadExecutor();
        //3.
        //没有正式工（核心线程），全是临时工，最多创建MAX_VALUE(没有上限个线程)
        //队列用的是SynchronousQueue这种队列，这种队列内部容量为0，相当于往队列里面放必须就有人取
        //只要创建了任务，一定是临时工处理，并且临时工一过60s就会消亡。即如果长时间没有任务，就没有一个线程存在
        Executors.newCachedThreadPool();
    }
}
